package org.tio.sitexxx.im.common;

import java.util.Objects;

public enum Command {

	/**
	 * 心跳请求
	 */
	HEARTBEAT_REQ((short) 1),
	/**
	 * 握手请求
	 */
	HANDSHAKE_REQ((short) 2),
	/**
	 * 握手响应
	 */
	HANDSHAKE_RESP((short) 3),
	/**
	 * 进入群组请求
	 */
	JOIN_GROUP_REQ((short) 4),
	/**
	 * 进入群组响应
	 */
	JOIN_GROUP_RESP((short) 5),
	/**
	 * 进入群组通知
	 */
	JOIN_GROUP_NTY((short) 6),
	/**
	 * 离开群组通知
	 */
	LEAVE_GROUP_NTY((short) 7),
	/**
	 * 点对点聊天（私聊）请求
	 */
	P2P_CHAT_REQ((short) 8),
	/**
	 * 点对点聊天（私聊）通知
	 */
	P2P_CHAT_NTY((short) 9),
	/**
	 * 群聊请求
	 */
	GROUP_CHAT_REQ((short) 10),
	/**
	 * 群聊通知
	 */
	GROUP_CHAT_NTY((short) 101),
	/**
	 * 获取p2p聊天记录数据-请求
	 */
	P2P_QUERY_CHAT_RECORD_REQ((short) 12),

	/**
	 * 让客户端关闭当前页面（只作用于WEB端）
	 */
	CLOSE_PAGE((short) 15),
	/**
	 * 消息提示
	 */
	MSG_TIP((short) 16),
	/**
	 * 分页获取在线观众请求
	 */
	PAGE_ONLINE_REQ((short) 18),
	/**
	 * 分页获取在线观众响应
	 */
	PAGE_ONLINE_RESP((short) 19),
	/**
	 * 更新token
	 */
	UPDATE_TOKEN_REQ((short) 20),
	/**
	 * 更新token响应
	 */
	UPDATE_TOKEN_RESP((short) 21),
	/**
	 * 撤回消息
	 */
	UNSEND_MSG_REQ((short) 22),
	/**
	 * 撤回消息通知
	 */
	UNSEND_MSG_NTY((short) 23),
	
	/**
	 *  我告诉服务器，张三发给我的私聊消息已读
	 */
	P2P_ALREADY_READ_REQ((short) 25),
	/**
	 *  服务器告诉张三，张三发给李四的私聊，李四已经阅读（暂不实现，因为此需求有争议）
	 */
	P2P_ALREADY_READ_NTY((short) 26),
	/**
	 *  查询未读私聊消息数请求
	 */
	P2P_NOT_READ_COUNT_REQ((short) 27),
	/**
	 *  查询未读私聊消息数响应
	 */
	P2P_NOT_READ_COUNT_RESP((short) 28),
	/**
	 * 顾问p2p消息发送
	 */
	KF_P2P_REQ((short) 29),
	/**
	 * 顾问p2p服务端发消息
	 */
	KF_P2P_NTY((short) 30),

	/**
	 * 服务器修改消息已读状态，告诉客服端
	 */
	KF_P2P_READ_REQ((short) 31),

	/**
	 * 接收消息后告诉服务器消息已读
	 */
	KF_P2P_READ_NTY((short) 32),

	KF_JOIN_P2P_REQ((short)33),
	KF_JOIN_P2P_REQ_((short)34),
	/**
	 * 语音
	 */
	KF_VOICE_REQ((short)64),
	KF_VOICE_NTY((short)68),
	/**
	 * 图片
	 */
	KF_PICTURE_REQ((short)63),
	KF_PICTURE_NTY((short)66),

	/**
	 * 视频
	 */
	KF_VIDEO_REQ((short)70),
	KF_VIDEO_NTY((short)74),
	/**
	 * 撤回
	 */
	KF_WITHDRAW_REQ((short)90),
	KF_WITHDRAW_NTY((short)99),
	/**
	 * 结束咨询
	 */
	KF_OVER_REQ((short)40),
	KF_OVER_NTY((short)41),

	/**
	 * 客服p2p消息发送
	 */
	KF_P2P_REQ0((short) 50),
	/**
	 * 客服p2p服务端发消息
	 */
	KF_P2P_NTY0((short) 51),
	/**
	 * 语音
	 */
	KF_VOICE_REQ0((short)52),
	KF_VOICE_NTY0((short)53),
	/**
	 * 图片
	 */
	KF_PICTURE_REQ0((short)54),
	KF_PICTURE_NTY0((short)55),

	/**
	 * 视频
	 */
	KF_VIDEO_REQ0((short)56),
	KF_VIDEO_NTY0((short)57),

	/**
	 *  DEMO 请求消息
	 */
	DEMO_REQ((short) 10000),
	
	/**
	 *  DEMO 通知消息
	 */
	DEMO_NTY((short) 10001),

	xxxxx((short) 99999);

	public static Command from(Short value) {
		Command[] values = Command.values();
		for (Command v : values) {
			if (Objects.equals(v.value, value)) {
				return v;
			}
		}
		return null;
	}

	Short value;

	private Command(Short value) {
		this.value = value;
	}

	public Short getValue() {
		return value;
	}

	public void setValue(Short value) {
		this.value = value;
	}
}
